package com.kotlin

/**
 * const val ==> 编译器常量（参考java中的编译器常量）
 * val       ==> 运行时常量
 * var       ==> 变量
 */

// 0、常量大写  --  常量名称（标有 const 的属性，或者保存不可变数据的没有自定义 get 函数的顶层/对象 val 属性）应该使用大写
const val USER_NAME = "张三"
val PASSWORD = "李四"

// 有const的类似java中的编译器常量，没有const只有val的只是表示一个不可变的变量，但是可以使用反射进行修改它的值

// 1、定义只读局部变量使用val，只能为其赋值一次
fun finalVal() {
    val a : Int  = 1 // 立即赋值
    val b = 2 // 自动推断出 b 为 Int 类型
    val c : Int // c 没有赋初始值，此时类型不可省略
    c = 3  // 给 c 第一次赋值
    // c = 4  // 这句会报错
}

// 2、定义变量
fun varVal(){
    var x = 10 // 自定推断出 x 为 Int 类型
    x += 20
    x += 30  // 变量可以多次进行赋值操作
}

// 3、顶层变量
val TOP_VAL : Int = 10 // 这个是顶层的变量